package top.infopub.mgr.flow.service;


import top.infopub.generic.GenericService;
import top.infopub.model.flow.TemplateNode;

import java.util.List;


public interface TemplateNodeService extends GenericService<TemplateNode, String> {

    /**
     * 查询当前模板剩余的【审批+知会】节点信息  node_idx>nowIdx
     * @param templateId
     * @param nowIdx
     * @return 
     * @see
     */
    List<TemplateNode> queryRestAllNodes(String templateId, Integer nowIdx);

    /**
     * 查询当前模板剩余的【审批】节点信息  node_idx>nowIdx
     * @param templateId
     * @param nowIdx
     * @return 
     * @see
     */
    List<TemplateNode> queryRestNodes(String templateId, Integer nowIdx);

    /**
     * 查询当前模板剩余的【知会】节点信息  node_idx>nowIdx
     * @param templateId
     * @param nowIdx
     * @return 
     * @see
     */
    List<TemplateNode> queryRestNotifyNodes(String templateId, Integer nowIdx);

    /**
     * 查询当前模板 小于 边界最大值 的【知会】节点信息
     * @param templateId
     * @param idxMax 
     * @return 
     * @see
     */
    List<TemplateNode> queryIdxsNotifyNodes(String templateId, Integer idxMax);

    /**
     * 批量插入节点
     * @param templateId 模板Id
     * @param sname 模板名称
     * @param srcBizTable 对应业务表单表名
     * @param templateNodes 节点集合
     * @see
     */
    void insertByBatch(String templateId, String sname, String srcBizTable, String branchCode,
                       String isEdit, String memo, List<TemplateNode> templateNodes);

    /**
     * 查询下一个模板节点信息
     * @param templateId 模板Id
     * @param nodeIdx 下一个节点值
     * @return
     */
    TemplateNode queryNextIdxsNodes(String templateId, Integer nodeIdx);

    /**
     * 查询模板所有节点流程，顺序列表
     * @param templateId 模板id可以从FlowTemplateEnum类里面获取
     * @return
     */
    List<TemplateNode> queryAllByTemplateId(String templateId);
}